package com.clx;

import com.clx.core.HeartbeatDetector;
import com.clx.discovery.RegistryConfig;
import lombok.extern.slf4j.Slf4j;

import java.util.Map;

@Slf4j
public class ConsumerApplication {
    public static void main(String[] args) {
        //想尽一切办法获取代理对象,使用ReferenceConfig进行封装
        //reference一定有生成代理的模版方法.get
        ReferenceConfig<HelloCrpc> reference = new ReferenceConfig<>();
        reference.setInterfaceRef(HelloCrpc.class);


        //代理做了些什么，
        // 1.连接注册中心
        // 2.拉取服务列表
        // 3选择一个服务并建立连接
        // 4、发送请求，携带一些信息（接口名，参数列表，方法的名字），获得结果
        CrpcBootstrap.getInstance()
                .application("first-clx-consumer")
                .registry(new RegistryConfig("zookeeper://127.0.0.1:2181"))
                .serialize("hessian")
                .compress("gzip")
                .reference(reference);

        System.out.println("===========================================");
        HelloCrpc helloCrpc = reference.get();
        while (true) {
            try {
                Thread.sleep(100000);
                System.out.println("=====================>>>>>>>>>>>>>>>>");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            //获取一个代理对象
            System.out.println("=============================>>>>>>>>>>>>>>>>>>>");
            for (int i = 0; i < 5; i++) {
                String sayHi = helloCrpc.sayHi("你好crpc");
                log.info("sayHi-->{}", sayHi);
            }
        }

    }
}
